#include "usermodel.hpp"
#include "db.h"
#include <iostream>
using namespace std;
bool UserModel::insert(User &user)
{
    // 组装sql语句
    char sql[1024] = {0};
    sprintf(sql, "insert into user(name,password,state) values('%s','%s','%s')", user.getName().c_str(), user.getPassword().c_str(), user.getState().c_str());
    MySQL mysql;
    if (mysql.connect())
    {
        if (mysql.update(sql))
        {
            // 获取插入成功的用户数据生成的主键id
            user.setId(mysql_insert_id(mysql.getConn()));
            return true;
        }
    }
    return false;
}

bool UserModel::selectUserById(User &user)
{
    // 组装sql语句
    char sql[1024] = {0};
    sprintf(sql, "select * from user where id=%d and password=%s", user.getId(), user.getPassword().c_str());
    MySQL mysql;
    if (mysql.connect())
    {
        if (mysql.query(sql))
        {
            // 获取查询到的用户数据

            // 判断查询结果的
            return true;
        }
    }
    return false;
}

User UserModel::query(int id)
{
    // 组装sql语句
    char sql[1024] = {0};
    sprintf(sql, "select * from user where id=%d", id);
    MySQL mysql;
    if (mysql.connect())
    {
        MYSQL_RES *res = mysql.query(sql);

        if(res != nullptr)
        {
            // 主键 查到了肯定就只查一行
            MYSQL_ROW row = mysql_fetch_row(res);

            if(row !=nullptr)
            {
                User user;
                user.setId(atoi(row[0]));
                user.setName(string(row[1]));
                user.setPassword(string(row[2]));
                user.setState(string(row[3]));

                // 释放资源
                mysql_free_result(res);
                return user;
            }
        }
    }
    return User();
}

bool UserModel::updateStatu(User &user)
{
    // 组装sql语句
    char sql[1024] = {0};
    sprintf(sql, "update user set state='%s' where id=%d", user.getState().c_str(), user.getId());
    MySQL mysql;
    if (mysql.connect())
    {
        if (mysql.update(sql))
        {
            return true;
        }
    }
    return false;
}

void UserModel::resetStatu()
{
    // 组装sql语句
    char sql[1024] = "update user set state='offline' where state='online'";
    MySQL mysql;
    if(mysql.connect())
    {
        mysql.update(sql);
    }
   
}